#ifndef __DAEMONTHREAD_H__
#define __DAEMONTHREAD_H__

#include <functional>
#include <future>
#include <tuple>
#include <utility>
#include "ThreadObject.h"

HTHREADPOOL_NAMESPACE_BEGIN
    // 该类可以实现线程退出后可继续执行
    class DaemonThread final : public ThreadObject
    {
    public:
        explicit DaemonThread(Task task);
        ~DaemonThread();

    protected:
        virtual void run() override;  // 线程执行体
        virtual void exit() override;
        Task         m_task;
        std::mutex   m_mutex;  // 互斥锁
    };

HTHREADPOOL_NAMESPACE_END

#endif
